﻿@using Kendo.Mvc.UI;
@{
    ViewBag.Title = "Giáo Trình";
}

@Html.AntiForgeryToken()
@*@using (@Html.BeginForm("GiaoTrinh", "QLGiaoTrinh", FormMethod.Post))
{*@
    @Html.ValidationSummary(true)
    @Html.ValidationMessage("Lỗi")
    <section class="panel">
        <header class="panel-heading">
            <h4 style="text-align:center">Danh sách Giáo Trình</h4>
        </header>
        <div class="panel-body">
            <div class="form-group">
                @( Html.Kendo().Grid<QLGT_2.Models.tbl_GiaoTrinh>()
               .Name("griddata")  // Tên của bảng buộc phải có trừ các thuộc tính dưới đây có thể có hoặc ko
                    .Pageable(page => page  // Phân trang
                            .ButtonCount(5)    // Số button hiển thị phân trang
                            .Info(true)   // Hiển thị thông tin dữ liệu dưới cùng góc bên phải Grid
                            .Refresh(true)   // Hiển thị nút làm mới Grid
                                    .Messages(mess => mess
                                    .Display("{0}-{1} của {2} bản ghi.")
                                    .Empty("Không có dữ liệu")
                                    .Refresh("Làm mới")
                                    .First("Trang đầu tiên")
                                    .Last("Trang cuối cùng")
                                    .Next("Trang tiếp")
                                    .Previous("Trang trước")
                                )
                             .Input(true)
                                    .Messages(mess =>
                                    {
                                        mess.Of("của {0}");
                                        mess.Page("Trang");
                                    })

                        )
                    .Columns(columns =>    // Cột muốn hiển thị trên Grid
                        {
                            columns.Bound(p => p.MaGiaoTrinh).Title("Mã Giáo trình");
                            columns.Bound(p => p.TenGiaoTrinh).Title("Tên Giáo trình");
                            columns.Bound(p => p.HieuDinh).Title("Hiệu đính");
                            columns.Bound(p => p.SoTrang).Title("Số trang");
                            columns.Bound(p => p.SoChuong).Title("Số chương");
                            columns.ForeignKey(p => p.MaNXB, (System.Collections.IEnumerable)ViewBag.NhaXuatBan, "MaNXB", "TenNXB")
                                    .Title("Tên Nhà xuất bản");
                            columns.Command(command =>
                            {
                                command.Edit().Text("Sửa").UpdateText("Cập nhật").CancelText("Hủy").HtmlAttributes(new {id = "btEdit" });
                                command.Destroy().Text("Xóa"); /*command.Custom("export_Data"); */
                            })
                                .Title("Chức năng");
                        })
        // Sửa kiểu popup
                    .Editable(editable =>
                    {
                        editable.Mode(GridEditMode.PopUp).TemplateName("GiaoTrinh_Editor");
                        editable.ConfirmDelete("Bạn có muốn xóa?");
                        editable.CreateAt(GridInsertRowPosition.Top);
                        editable.Window(window =>
                        {
                            window.Title("Thêm/Sửa dữ liệu");
                            //window.Width(450);
                        });
                        editable.DisplayDeleteConfirmation("Bạn có muốn xóa?");
                    })
                    .Sortable()    // Cho phép sắp xếp dữ liệu
        // Cho phép lọc dữ liệu
                    .Filterable(filterable => filterable
                            .Messages(mess => mess
                                .And("Và")
                                .Clear("Xóa")
                                .Filter("Lọc")
                                .Info("Điều kiện lọc tìm kiếm")

                                )
                                .Extra(false)

                            .Operators(operators => operators
                                .ForString(str => str.Clear()
                                    .StartsWith("Bắt đầu với")
                                    .IsEqualTo("Đúng bằng")
                                    .IsNotEqualTo("Không bao gồm")
                                    .Contains("Chứa ký tự")
                                )
                                .ForNumber(num => num
                                        .Clear()
                                        .IsGreaterThan("Lớn hơn")
                                        .IsEqualTo("Bằng")
                                        .IsNotEqualTo("Nhỏ hơn")
                    )))

                // Cài đặt nguồn dữ liệu
                .DataSource(dataSource => dataSource
                        .Ajax()   // Mọi thao tác thực hiện thông qua Ajax
                        .ServerOperation(false) // Ko cho gửi request bằng cách load lại trang mà thông qua Ajax

                        .PageSize(10)   // Số row hiển thị trên Grid
                        .Model(model =>
                            {
                                model.Id(p => p.MaGiaoTrinh);  // Chỉ ra khóa của Grid
                                //model.Field(p => p.MaGiaoTrinh).Editable(false);
                            }
                            )
                        .Sort(item =>
                        {
                            // Mặc định khi load dữ liệu lên Grid sẽ sắp xếp giảm theo Id
                            item.Add(data => data.MaGiaoTrinh).Descending();
                        })
                    // Cài đặt các sự kiện khi thay đổi dữ liệu
                        .Events(events =>
                        {
                            events.Error("onError");
                            //events.Change("onRequestStart");
                            //events.Sync("sync_handler");
                            //events.Push("Success");
                            //events.Change("Success");
                            events.RequestEnd("onRequestEnd");
                            //events.RequestStart("onRequestStart");
                        })
                    // Gán Action khi thêm dữ liệu
                       .Create(update => update.Action("TaoGiaoTrinh", "QLGiaoTrinh"))
                    // Gán Action khi đổ dữ liệu lên Grid
                       .Read(read => read.Action("HienThiGiaoTrinh", "QLGiaoTrinh"))
                    // Sửa
                       .Update(update => update.Action("SuaGiaoTrinh", "QLGiaoTrinh"))
                    // Xóa
                       .Destroy(update => update.Action("XoaGiaoTrinh", "QLGiaoTrinh"))
                )
        // Cài đặt thanh Menu bên trên Grid
                .ToolBar(toolbar =>
                    {
                        toolbar.Template(@<text>
                            <div class="toolbar" style="float:right">
                                <a class="btn btn-danger k-grid-add" href="#">
                                    <i class="glyphicon glyphicon-plus-sign"></i> Thêm mới
                                </a>
                                <button class="btn btn-danger" data-toggle="modal" data-target="#myModal">
                                    <i class="glyphicon glyphicon-import"></i>Nhập Excel
                                </button>
                                <button class="btn btn-danger" id="printGrid" name="exportPDF">
                                    <i class="glyphicon glyphicon-export"></i> Xuất PDF
                                </button>
                            </div>
                        </text>);
                    })
.Events(events =>
{
    //events.Change("onEdit");
    //events.Cancel("onEdit");
    events.Edit("onEdit");
    //events.ColumnLock
})
                )
            </div>
        </div>
    </section>
@*}*@
@Html.Partial("_PopupInsert", new QLGT_2.Models.ModelPopup { actionName = "ImportGiaoTrinh", controllerName = "QLGiaoTrinh" })
<script>
    $("#printGrid").click(function (e) {
        var dataSource = $("#griddata").data("kendoGrid").dataSource;
        var filters = dataSource.filter();
        var allData = dataSource.data();
        var query = new kendo.data.Query(allData);
        var data = query.filter(filters).data;

        var result = "";
        //Defining the headers
        result += "<style>.text{ mso-number-format:'@Html.Raw("@")';} table { border-collapse: collapse;padding: 8px;} th {background-color: #ddd;} table, td, th { font-family: Times New Roman; font-size: 17px; border: 1px solid black; padding: 5px; border-width: thin; } </style>";
        result += "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>";
        result += "<table><tr><th>STT</th><th>Mã GT</th><th>Giáo trình</th><th>Hiệu đính</th><th>Số trang</th><th>Số chương</th><th>Nhà xuất bản</th><th>Tác giả</th></tr>";
        //Filling in the data
        var count = 0;
        function convert(str) {
            if (str != null) {
                return kendo.format("{0:dd/MM/yyyy}", str)
            }
        }
        for (var i = 0; i < data.length; i++) {
            count = count + 1;
            result += "<tr>";
            result += "<td>"; result += count; result += "</td>";
            result += "<td>"; result += data[i].MaGiaoTrinh; result += "</td>";
            result += "<td>"; result += data[i].TenGiaoTrinh; result += "</td>";
            result += "<td>"; result += (convert(data[i].HieuDinh)); result += "</td>";
            result += "<td>"; result += data[i].SoTrang; result += "</td>";
            result += "<td>"; result += data[i].SoChuong; result += "</td>";
            result += "<td>"; result += data[i].MaNXB; result += "</td>";
            
            result += "</tr>";
        }
        result += "</table>";

        var uri = 'data:application/vnd.ms-excel;base64,'
     , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->{table}</body></html>'
     , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
     , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }

        var ctx = { worksheet: name || 'Worksheet', table: result }

        $(this).attr('download', 'Giáo trình.xls');
        $(this).attr('href', uri + base64(format(template, ctx)));

    });
</script>